package com.eastfair.imaster.api;

import com.eastfair.core.utils.ConvertUtil;
import com.eastfair.imaster.dto.CompanyDTO;
import com.eastfair.imaster.dto.CompanySaveDTO;
import com.eastfair.imaster.dto.ProductSaveDTO;
import com.eastfair.imaster.dto.ProductUpdateDTO;
import com.eastfair.imaster.entity.Company;
import com.eastfair.imaster.entity.Employee;
import com.eastfair.imaster.entity.Product;
import com.eastfair.imaster.vo.CompanyVo;
import com.eastfair.core.base.R;
import io.swagger.annotations.ApiOperation;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * 公司服务feign接口
 *
 * @ClassName CompanyServiceFeign
 * @Description TODO
 * @Author liuxiaobai
 * @Date 2021/8/19 5:14 下午
 * @Version 1.0
 */
@FeignClient(value = "imaster/company")
public interface CompanyServiceFeign {

    /**
     * 根据ID获取公司信息
     *
     * @param id 主键ID
     * @return 公司实体
     */
    @GetMapping("/company/findById")
    CompanyVo findById(@RequestParam(value = "id") Long id);


    /**
     * 批量查询用户简单信息
     *
     * @param companyDTO userIds 账户用户id集合
     * @return
     */
    @PostMapping("/company/queryByIds")
    List<Company> queryByIds(@RequestBody CompanyDTO companyDTO);


    /**
     * 新增公司
     *
     * @param companySaveDTO companySaveDTO
     * @return 产品实体
     */
    @PostMapping("/company")
    R<Product> saveCompany(@RequestBody CompanySaveDTO companySaveDTO);




    /**
     * 根据ID获取公司员工
     *
     * @param id 员工ID
     * @return 员工实体
     */
    @PostMapping("/employee/find/{id}")
    R<Employee> getEmployeeById(@PathVariable("id") Long id);

    /**
     * 根据ID获取产品
     *
     * @param id 产品ID
     * @return 产品实体
     */
    @PostMapping("/product/find/{id}")
    R<Product> getProductById(@PathVariable("id") Long id);

    /**
     * 新增产品
     *
     * @param product ProductSaveDTO
     * @return 产品实体
     */
    @PostMapping("/product")
    R<Product> saveProduct(@RequestBody ProductSaveDTO product);

    /**
     * 修改产品
     *
     * @param product ProductUpdateDTO
     * @return 修改后的产品实体
     */
    @PutMapping("/product")
    R<Product> updateProduct(@RequestBody ProductUpdateDTO product);


    /**
     * 查询单个公司
     *
     * @param id 主键id
     * @return
     */
    @GetMapping("/test/{id}")
    R test(@PathVariable(value = "id") Long id);

}
